#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
飞书多维表格API配置文件
"""

import os
from typing import Dict, Any


CLIENT_ID = "cli_a73597c1f264900b"
CLIENT_SECRET = "UQyWoIa6ORF8pHAZWwb9EdZ3ywoO7TIy"
APP_TOKEN = "WGtkbA8IaahGNnso37ScUBKcnPf"
TABLE_ID = "tblgWlQBeo7cSELB"
VIEW_ID = "vewXsOmVIY"

class Config:
    """配置管理类"""
    
    def __init__(self):
        # 飞书应用配置
        self.CLIENT_ID = os.getenv('FEISHU_CLIENT_ID', CLIENT_ID)
        self.CLIENT_SECRET = os.getenv('FEISHU_CLIENT_SECRET', CLIENT_SECRET)
        self.APP_TOKEN = os.getenv('FEISHU_APP_TOKEN', APP_TOKEN)
        self.TABLE_ID = os.getenv('FEISHU_TABLE_ID', TABLE_ID)
        self.VIEW_ID = os.getenv('FEISHU_VIEW_ID', VIEW_ID)
        
        self.REDIRECT_URI = os.getenv('FEISHU_REDIRECT_URI', 'http://localhost:8080/callback')
        
        # 默认权限范围
        self.DEFAULT_SCOPE = "contact:read:user,contact:read:group,bitable:app,offline_access"
        
        # Token存储文件
        self.TOKEN_STORAGE_FILE = os.getenv('TOKEN_STORAGE_FILE', 'feishu_tokens.json')
        
        # API端点配置
        self.AUTH_URL = "https://accounts.feishu.cn/open-apis/authen/v1/authorize"
        self.TOKEN_URL = "https://open.feishu.cn/open-apis/authen/v2/oauth/token"
        self.BITABLE_BASE_URL = "https://open.feishu.cn/open-apis/bitable/v1"
        
        # 服务器配置
        self.CALLBACK_HOST = 'localhost'
        self.CALLBACK_PORT = 8080
        
        # Token刷新配置（提前多少秒刷新token）
        self.TOKEN_REFRESH_BUFFER = 300  # 5分钟
        
        # 授权超时时间（秒）
        self.AUTH_TIMEOUT = 300  # 5分钟
    
    def validate(self) -> bool:
        """验证配置是否完整"""
        if self.CLIENT_ID == 'your_client_id_here':
            print("❌ 请设置正确的CLIENT_ID")
            return False
        
        if self.CLIENT_SECRET == 'your_client_secret_here':
            print("❌ 请设置正确的CLIENT_SECRET")
            return False
        
        return True
    
    def get_app_config(self) -> Dict[str, Any]:
        """获取应用配置"""
        return {
            'client_id': self.CLIENT_ID,
            'client_secret': self.CLIENT_SECRET,
            'redirect_uri': self.REDIRECT_URI,
            'default_scope': self.DEFAULT_SCOPE,
            'app_token': self.APP_TOKEN,
            'table_id': self.TABLE_ID,
            'view_id': self.VIEW_ID,
        }
    
    def print_config_help(self):
        """打印配置帮助信息"""
        print("""
🔧 配置说明：

1. 设置环境变量（推荐）：
   export FEISHU_CLIENT_ID="your_actual_client_id"
   export FEISHU_CLIENT_SECRET="your_actual_client_secret"

2. 或者直接修改 config.py 文件中的配置值

3. 获取Client ID和Client Secret的步骤：
   - 登录飞书开发者后台：https://open.feishu.cn/
   - 进入应用详情页
   - 在左侧导航栏，单击「凭证与基础信息」
   - 在「应用凭证」区域，获取并保存 App ID 和 App Secret

4. 配置重定向URL：
   - 在应用后台的「安全设置」页面
   - 将 http://localhost:8080/callback 添加到重定向URL列表

5. 申请权限：
   - 在应用后台的「权限管理」页面
   - 申请所需的多维表格相关权限
        """)

# 全局配置实例
config = Config()